package com.fx.ruankao.mapper;

import com.fx.ruankao.entity.Permission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 权限Mapper接口
 */
@Mapper
public interface PermissionMapper {
    /**
     * 新增权限
     * @param permission 权限信息
     * @return 影响行数
     */
    int insert(Permission permission);

    /**
     * 根据ID删除权限
     * @param id 权限ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 更新权限信息
     * @param permission 权限信息
     * @return 影响行数
     */
    int update(Permission permission);

    /**
     * 根据ID查询权限
     * @param id 权限ID
     * @return 权限信息
     */
    Permission selectById(Long id);

    /**
     * 根据权限编码查询权限
     * @param permissionCode 权限编码
     * @return 权限信息
     */
    Permission selectByPermissionCode(String permissionCode);

    /**
     * 查询权限列表
     * @param permission 查询条件
     * @return 权限列表
     */
    List<Permission> selectList(Permission permission);

    /**
     * 查询权限总数
     * @param permission 查询条件
     * @return 权限总数
     */
    int selectCount(Permission permission);

    /**
     * 根据角色ID查询权限列表
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<Permission> selectPermissionsByRoleId(Long roleId);

    /**
     * 根据用户ID查询权限列表
     * @param userId 用户ID
     * @return 权限列表
     */
    List<Permission> selectPermissionsByUserId(Long userId);
}